package oop.controller.action.category;

import java.util.List;

import oop.controller.action.DefaultAction;
import oop.data.Category;
import oop.db.dao.CategoryDAO;

public class CreateAction extends DefaultAction {

	@Override
	public void perform() throws Exception {
		try {
			Category category = new Category();
			boolean error = false;

			String submitted = request.getParameter("cc_submit");
			if ("create".equals(submitted)) {
				// cập nhật tên nếu không trùng
				List<Category> categories = CategoryDAO.fetchByName(request
						.getParameter("cc_name"));
				if (categories.isEmpty()) {
					category.setName(request.getParameter("cc_name"));
				} else {
					error = true;
					request.setAttribute("nameErr", "Trùng tên!");
				}

				// cập nhật cha nếu không bị nối vòng
				if ("none".equals(request.getParameter("cc_parent"))) {
					category.setParent(null);
				} else {
					int parentId = Integer.parseInt(request
							.getParameter("cc_parent"));
					categories = CategoryDAO.fetchById(parentId);
					if (categories.isEmpty()) { // kiểm tra thể loại cha tồn tại
						error = true;
						request.setAttribute("parentErr",
								"Thể loại cha không tồn tại");
					} else {
						Category parent = categories.get(0);
						category.setParent(parent);
					}
				}

				// lưu nếu không có lỗi
				if (!error) {
					CategoryDAO.persist(category);
					setNextAction("category.list");
					return;
				}
			} else if ("cancel".equals(submitted)) {
				setNextAction("category.list");
				return;
			}
		} catch (NumberFormatException ex) {
			request.setAttribute("message", "id không hợp lệ");
			setNextAction("error");
		}
	}

}
